package com.esionwong.basic.service;

import com.esionwong.basic.entity.SysRole;
import com.esionwong.basic.framework.common.service.BaseService;
import com.esionwong.basic.framework.core.pagination.Paging;
import com.esionwong.basic.param.sysRole.SysRolePageParam;
import com.esionwong.basic.param.sysRole.UpdateSysRolePermissionParam;
import com.esionwong.basic.vo.SysRoleQueryVo;

import java.io.Serializable;

/**
 * 系统角色 服务类
 *
 * @author esionwong
 */
public interface SysRoleService extends BaseService<SysRole> {

    /**
     * 保存
     *
     * @param sysRole 角色信息
     * @return boolean
     * @throws Exception
     */
    boolean saveSysRole(SysRole sysRole) throws Exception;

    /**
     * 修改
     *
     * @param sysRole 角色信息
     * @return boolean
     * @throws Exception
     */
    boolean updateSysRole(SysRole sysRole) throws Exception;

    /**
     * 删除
     *
     * @param id 角色ID
     * @return boolean
     * @throws Exception
     */
    boolean deleteSysRole(Long id) throws Exception;

    /**
     * 根据ID获取查询对象
     *
     * @param id 角色ID
     * @return 角色信息
     * @throws Exception
     */
    SysRoleQueryVo getSysRoleById(Serializable id) throws Exception;

    /**
     * 获取分页对象
     *
     * @param sysRolePageParam 查询参数
     * @return 角色分页列表
     * @throws Exception
     */
    Paging<SysRole> getSysRolePageList(SysRolePageParam sysRolePageParam) throws Exception;

    /**
     * 根据id校验角色是否存在并且已启用
     *
     * @param id 角色ID
     * @return boolean
     * @throws Exception
     */
    boolean isEnableSysRole(Long id) throws Exception;

    /**
     * 判断角色编码是否存在
     *
     * @param code 角色编码
     * @return boolean
     * @throws Exception
     */
    boolean isExistsByCode(String code) throws Exception;

    /**
     * 修改系统角色权限配置
     *
     * @param param 角色权限信息
     * @return boolean
     * @throws Exception
     */
    boolean updateSysRolePermission(UpdateSysRolePermissionParam param) throws Exception;
}
